<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>JSP 외부 접근 막기</title>
</head>
<body>
<h1>JSP 외부 접근 막기</h1>
<p>include 액션 태그와 front controller 패턴을 사용해서 페이지 모듈화를 하는 경우,<br />
	영리한 사용자는 include 되는 JSP페이지 경로를 알아내어 front controller를 거치지 않고<br />
	바로 JSP페이지를 실행할 수 있음 - 보안상 문제 발생</p>
<p>예를 들어, 게시판 목록 페이지를 보려면<br />
	1. /board/list.jsp로 접근하거나<br />
	2. /project9.jsp?action=list로 접근함</p>
<p>include 액션 태그를 이용해서 페이지 모듈화를 했기 때문에 사용자로 하여금 1번 방식보다는 2번 방식으로 보도록 강제해야 함</p>
<p>하지만 간혹 영리한 사용자는 1번의 접근방식을 알아내어 include된 문서없이 특정페이지를 볼수 있음</p>

<h3>해결책</h3>
<p>URL을 통한 JSP 페이지의 직접 접근은 되도록 차단하는 것이 좋음</p>
<p>특히, front controller 패턴을 사용하는 경우 projectv9.jsp를 통해서만 JSP 페이지에 접근하도록 해야함</p>
<p>이것을 위한 첫번째 방안은 모든 JSP 페이지를 WEB-INF 폴더 아래에 두는 것(추천!)</p>
<p>두번째 방법은 web.xml에 JSP페이지에 대한 보안 설정을 하는 것</p>

<hr />
<%@ include file="/WEB-INF/secure/06header.jspf" %>
<%@ include file="/WEB-INF/secure/06contents.jspf" %>
<%@ include file="/WEB-INF/secure/06footer.jspf" %>

</body>
</html>